package com.lz;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;

/**
 * @ClassName Generator
 * @Description 代码生成器
 * @Author 2214361854
 * @Date 2022/4/23 18:12
 * @Version 1.0
 */
public class Generator {
    public static void main(String[] args) {
        //获取代码生成器
        AutoGenerator autoGenerator = new AutoGenerator();

        /*数据源设置*/
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/abc?serverTimezone=UTC");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");

        /*全局配置设置*/
        GlobalConfig globalConfig = new GlobalConfig();
        //设置生成路径
        globalConfig.setOutputDir("D://");
        //设置是否打开生成代码所在目录
        globalConfig.setOpen(false);
        //设置作者
        globalConfig.setAuthor("lz");
        //设置是否覆盖原生成文件
        globalConfig.setFileOverride(false);
        //设置数据层接口名
        globalConfig.setMapperName("%sDao");
        //设置Id生成策略
        globalConfig.setIdType(IdType.ASSIGN_ID);

        /*包相关设置*/
        PackageConfig packageInfo = new PackageConfig();
        //设置生成包名
        packageInfo.setParent("com.lz");
        //设置实体类包名
        packageInfo.setEntity("domain");
        //设置数据层包名
        packageInfo.setMapper("dao");

        /*策略设置*/
        StrategyConfig strategyConfig = new StrategyConfig();
        //设置当前参与生成的表名
        //strategyConfig.setInclude("");
        //表前缀 模块名 = 数据库表名 + 前缀名
        //strategyConfig.setTablePrefix("");
        //是否启用Rest风格
        strategyConfig.setRestControllerStyle(true);
        //是否启用lombok
        strategyConfig.setEntityLombokModel(true);
        //设置乐观锁字段
        strategyConfig.setVersionFieldName("version");
        //设置逻辑删除字段
        strategyConfig.setVersionFieldName("deleted");

        /*加入设置*/
        autoGenerator.setPackageInfo(packageInfo);
        autoGenerator.setGlobalConfig(globalConfig);
        autoGenerator.setDataSource(dataSourceConfig);
        autoGenerator.setStrategy(strategyConfig);

        //执行生成器
        autoGenerator.execute();
    }
}
